import { AxiosResponse } from "axios"
import { ElMessage } from "element-plus"

// 响应数据
export interface Result {
	data: object | []
	message: string
	code: number
}

// 分页响应数据
export interface ResultPage<T> {
	data: T[],
	message: string             // 信息
	code: number                // 状态码
	total: number               // 总条数
	currentPage: number         // 当前页码
	pageSize: number            // 每页大小
	pages: number               // 总页数
}

// 页码实体
export interface Page {
	currentPage: number			// 当前页
	pageSize: number			// 每页大小
	total: number				// 数据总量
}

export function check(response: AxiosResponse) {
	return checkResult(checkResponse(response))
}

// 检查后端返回的 Result{data: any, message: str, code: int}
export function checkResult(result: Result) {
	if (typeof result === "string") result = JSON.parse(result)
	if (result.code != 200) {
		ElMessage.error(result.message)
		throw new Error()
	}
	return result.data
}

export function checkResultPage(response: AxiosResponse) {
	let result = checkResponse(response)
	if (typeof result === "string") result = JSON.parse(result)
	if (result.code != 200) {
		ElMessage.error(result.message)
		throw new Error()
	}
	return result
}

// 检查请求是否成功，成功则返回 data、否则报错
export function checkResponse(response: AxiosResponse) {
	if (response.status == 401) {
		ElMessage.error("登录异常, 请重新登录")
		throw new Error()
	}
	return response.data
}